//中间件 
// 1.应用级中间件 2.路由级中间件 3.内置中间件
//  4.第三方中间件 5.自定义中间件 6.异常处理中间件
const express=require('express')
const bodyPaeser=require('./defineMwa')
const app=express()

const mwa=(req,res,next)=>{
     console.log('我是全局中间件')
    next()
}
const mwb=(req,res,next)=>{
    console.log('我局部中间件')
   next()
}
//托管静态文件 相当于serve -s public
//托管api接口 json-server --watch db.json
app.use('/public',express.static('../public'))

//在路由请求之前
app.use(express.json())//解析请求参数为json的情况
app.use(express.urlencoded({extended:false}))//解析请求参数为from键值对的情况
app.use(mwa)

//自定义中间件
app.use(bodyPaeser)

app.get('/getMw',mwb,(req,res)=>{
    const {query}=req
    res.send({
        code:'2000',
        mag:'get请求成功',
        data:query
    })
})

//测试内置中间件 postman 发送row json/x-www-form-urlencoded
app.post('/postInmd',(req,res)=>{
    const body=req.body
    // console.log(req.body)
    // throw new Error('baocuole')
    res.send({
        code:'2000',
        mag:'post请求成功',
        data:body
    })
})

//全局捕获页面报错避免页面崩溃
app.use(function(err,req,res,next){
res.send('出错了')
})

app.listen('3000',(req,res)=>{
    console.log('服务器启动了，127.0.0.1:3000')
})